home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer 2.0 / Internet Surfer 2.0 (Wayzata Technology) (1996).iso / pc / text / mac / faqs.355 < prev    next >
Text File  |  1996-02-12  |  29KB  |  551 lines

  1. Frequently Asked Questions (FAQS);faqs.355
  2.  
  3.  
  4.  
  5.   * DEFCONSTANT has several potentially unexpected properties:
  6.  
  7.      - Once a name has been declared constant, it cannot be used a
  8.        the name of a local variable (lexical or special) or function
  9.        parameter.  Really.  See page 87 of CLtL2.
  10.  
  11.      - A DEFCONSTANT cannot be re-evaluated (eg, by reloading the
  12.        file in which it appears) unless the new value is EQL to the
  13.        old one.  Strictly speaking, even that may not be allowed.
  14.        (DEFCONSTANT is "like DEFPARAMETER" and hence does an
  15.        assignment, which is not allowed if the name has already
  16.        been declared constant by DEFCONSTANT.)
  17.  
  18.        Note that this makes it difficult to use anything other
  19.        than numbers, symbols, and characters as constants.
  20.  
  21.      - When compiling (DEFCONSTANT name form) in a file, the form
  22.        may be evaluated at compile-time, load-time, or both.
  23.  
  24.        (You might think it would be evaluated at compile-time and
  25.        the _value_ used to obtain the object at load-time, but it
  26.        doesn't have to work that way.)
  27.  
  28. Declarations:
  29.  
  30.   * You often have to declare the result type to get the most
  31.     efficient arithmetic.  Eg,
  32.  
  33.        (the fixnum (+ (the fixnum e1) (the fixnum e2)))
  34.  
  35.      rather than
  36.  
  37.        (+ (the fixnum e1) (the fixnum e2))
  38.  
  39.   * Declaring the iteration variable of a DOTIMES to have type FIXNUM
  40.     does not guarantee that fixnum arithmetic will be used.  That is,
  41.     implementations that use fixnum-specific arithmetic in the presence
  42.     of appropriate declaration may not think _this_ declaration is
  43.     sufficient.  It may help to declare that the limit is also a
  44.     fixnum, or you may have to write out the loop as a DO and add
  45.     appropriate declarations for each operation involved.
  46.  
  47. FORMAT related errors:
  48.  
  49.   * When printing messages about files, filenames like foo~ (a GNU-Emacs
  50.     backup file) may cause problems with poorly coded FORMAT control
  51.     strings.
  52.  
  53.   * Beware of using an ordinary string as the format string,
  54.     i.e., (format t string), rather than (format t "~A" string).
  55.  
  56. Miscellaneous:
  57.  
  58.   * Be careful of circular lists and shared list structure.
  59.  
  60.   * Watch out for macro redefinitions.
  61.  
  62.   * If you use (SETF (SYMBOL-FUNCTION 'foo) ...) to change the definition of
  63.     a built-in Lisp function named FOO, be aware that this may not work
  64.     correctly (i.e., as desired) in compiled code in all Lisps. In some Lisps,
  65.     the compiler treats certain symbols in the LISP package specially,
  66.     ignoring the function definition.
  67.  
  68.   * A NOTINLINE may be needed if you want SETF of SYMBOL-FUNCTION to
  69.     affect calls within a file.  (See CLtL2, page 686.)
  70.  
  71.   * When dividing two numbers, beware of creating a rational number where
  72.     you intended to get an integer or floating point number. Use TRUNCATE
  73.     or ROUND to get an integer and FLOAT to ensure a floating point
  74.     number. This is a major source of errors when porting ZetaLisp or C
  75.     code to Common Lisp.
  76.  
  77.   * If your code doesn't work because all the symbols are mysteriously
  78.     in the keyword package, one of your comments has a colon (:) in
  79.     it instead of a semicolon (;).
  80.  
  81. ----------------------------------------------------------------
  82. [3-12] When is it right to use EVAL?
  83.  
  84. Hardly ever.  Any time you think you need to use EVAL, think hard about it.
  85. EVAL is useful when implementing a facility that provides an external
  86. interface to the Lisp interpreter.  For instance, many Lisp-based editors
  87. provide a command that prompts for a form and displays its value.
  88. Inexperienced macro writers often assume that they must explicitly EVAL the
  89. subforms that are supposed to be evaluated, but this is not so; the correct
  90. way to write such a macro is to have it expand into another form that has
  91. these subforms in places that will be evaluated by the normal evaluation
  92. rules.  Explicit use of EVAL in a macro is likely to result in one of two
  93. problems: the dreaded "double evaluation" problem, which may not show up
  94. during testing if the values of the expressions are self-evaluating
  95. constants (such as numbers); or evaluation at compile time rather than
  96. runtime.  For instance, if Lisp didn't have IF and one desired to write it,
  97. the following would be wrong:
  98.  
  99.    (defmacro if (test then-form &optional else-form)
  100.      ;; this evaluates all the subforms at compile time, and at runtime
  101.      ;; evaluates the results again.
  102.      `(cond (,(eval test) ,(eval then-form))
  103.             (t ,(eval else-form))))
  104.  
  105.    (defmacro if (test then-form &optional else-form)
  106.      ;; this double-evaluates at run time
  107.      `(cond ((eval ,test) (eval ,then-form))
  108.             (t (eval ,else-form)))
  109.  
  110. This is correct:
  111.  
  112.    (defmacro if (test then-form &optional else-form)
  113.      `(cond (,test ,then-form)
  114.             (t ,else-form)))
  115.  
  116. On the other hand, EVAL can sometimes be necessary when the only portable
  117. interface to an operation is a macro.
  118.  
  119. ----------------------------------------------------------------
  120. [3-13] Why does my program's behavior change each time I use it?
  121.  
  122. Most likely your program is altering itself, and the most common way this
  123. may happen is by performing destructive operations on embedded constant
  124. data structures.  For instance, consider the following:
  125.  
  126.    (defun one-to-ten-except (n)
  127.      (delete n '(1 2 3 4 5 6 7 8 9 10)))
  128.    (one-to-ten-except 3) => (1 2 4 5 6 7 8 9 10)
  129.    (one-to-ten-except 5) => (1 2 4 6 7 8 9 10) ; 3 is missing
  130.  
  131. The basic problem is that QUOTE returns its argument, *not* a copy of
  132. it. The list is actually a part of the lambda expression that is in
  133. ONE-TO-TEN-EXCEPT's function cell, and any modifications to it (e.g., by
  134. DELETE) are modifications to the actual object in the function definition.
  135. The next time that the function is called, this modified list is used.
  136.  
  137. In some implementations calling ONE-TO-TEN-EXCEPT may even result in
  138. the signalling of an error or the complete aborting of the Lisp process.  Some
  139. Lisp implementations put self-evaluating and quoted constants onto memory
  140. pages that are marked read-only, in order to catch bugs such as this.
  141. Details of this behavior may vary even within an implementation,
  142. depending on whether the code is interpreted or compiled (perhaps due to
  143. inlined DEFCONSTANT objects).
  144.  
  145. All of these behaviors are allowed by the draft ANSI Common Lisp
  146. specification, which specifically states that the consequences of modifying
  147. a constant are undefined (X3J13 vote CONSTANT-MODIFICATION:DISALLOW).
  148.  
  149. To avoid these problems, use LIST to introduce a list, not QUOTE. QUOTE
  150. should be used only when the list is intended to be a constant which
  151. will not be modified.  If QUOTE is used to introduce a list which will
  152. later be modified, use COPY-LIST to provide a fresh copy.
  153.  
  154. For example, the following should all work correctly:
  155.  
  156.    o  (remove 4 (list 1 2 3 4 1 3 4 5))
  157.    o  (remove 4 '(1 2 3 4 1 3 4 5))   ;; Remove is non-destructive.
  158.    o  (delete 4 (list 1 2 3 4 1 3 4 5))
  159.    o  (let ((x (list 1 2 4 1 3 4 5)))
  160.         (delete 4 x))
  161.    o  (defvar *foo* '(1 2 3 4 1 3 4 5))
  162.       (delete 4 (copy-list *foo*))
  163.       (remove 4 *foo*)
  164.       (let ((x (copy-list *foo*)))
  165.          (delete 4 x))
  166.  
  167. The following, however, may not work as expected:
  168.  
  169.    o  (delete 4 '(1 2 3 4 1 3 4 5))
  170.  
  171. ----------------------------------------------------------------
  172. [3-14]  When producing formatted output in Lisp, where should you put the
  173.         newlines (e.g., before or after the line, FRESH-LINE vs TERPRI,
  174.         ~& vs ~% in FORMAT)?
  175.  
  176.  
  177. Where possible, it is desirable to write functions that produce output
  178. as building blocks. In contrast with other languages, which either
  179. conservatively force a newline at various times or require the program
  180. to keep track of whether it needs to force a newline, the Lisp I/O
  181. system keeps track of whether the most recently printed character was
  182. a newline or not. The function FRESH-LINE outputs a newline only if
  183. the stream is not already at the beginning of a line.  TERPRI forces a
  184. newline irrespective of the current state of the stream. These
  185. correspond to the ~& and ~% FORMAT directives, respectively. (If the
  186. Lisp I/O system can't determine whether it's physically at the
  187. beginning of a line, it assumes that a newline is needed, just in case.)
  188.  
  189. Thus, if you want formatted output to be on a line of its own, start
  190. it with ~& and end it with ~%. (Some people will use a ~& also at the
  191. end, but this isn't necessary, since we know a priori that we're not
  192. at the beginning of a line. The only exception is when ~& follows a
  193. ~A, to prevent a double newline when the argument to the ~A is a
  194. formatted string with a newline at the end.) For example, the
  195. following routine prints the elements of a list, N elements per line,
  196. and then prints the total number of elements on a new line:
  197.  
  198.    (defun print-list (list &optional (elements-per-line 10))
  199.      (fresh-line)
  200.      (loop for i upfrom 1
  201.            for element in list do
  202.        (format t "~A ~:[~;~%~]" element (zerop (mod i elements-per-line))))
  203.      (format t "~&~D~%" (length list)))
  204.  
  205. ----------------------------------------------------------------
  206. [3-15] I'm using DO to do some iteration, but it doesn't terminate.
  207.  
  208. Your code probably looks something like
  209.    (do ((sublist list (cdr list))
  210.         ..)
  211.        ((endp sublist)
  212.         ..)
  213.      ..)
  214. or maybe
  215.    (do ((index start (+ start 2))
  216.         ..)
  217.        ((= index end)
  218.         ..)
  219.      ..)
  220.  
  221. The problem is caused by the (cdr list) and the (+ start 2) in the
  222. first line. You're using the original list and start index instead of
  223. the working sublist or index. Change them to (cdr sublist) and
  224. (+ index 2) and your code should start working.
  225.  
  226. ----------------------------------------------------------------
  227. ;;; *EOF*
  228. Xref: bloom-picayune.mit.edu comp.lang.lisp:8752 comp.lang.scheme:5783 news.answers:4562
  229. Path: bloom-picayune.mit.edu!enterpoop.mit.edu!spool.mu.edu!uunet!ogicse!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!crabapple.srv.cs.cmu.edu!mkant
  230. From: mkant+@cs.cmu.edu (Mark Kantrowitz)
  231. Newsgroups: comp.lang.lisp,comp.lang.scheme,news.answers
  232. Subject: FAQ: Lisp Implementations and Mailing Lists 4/6 [Monthly posting]
  233. Summary: Questions about Lisp/Scheme Implementations and Mailing Lists
  234. Message-ID: <lisp-faq-4.text_724237334@cs.cmu.edu>
  235. Date: 13 Dec 92 09:02:26 GMT
  236. Article-I.D.: cs.lisp-faq-4.text_724237334
  237. Expires: Tue, 26 Jan 1993 09:02:14 GMT
  238. Sender: news@cs.cmu.edu (Usenet News System)
  239. Reply-To: lisp-faq@think.com
  240. Followup-To: poster
  241. Organization: School of Computer Science, Carnegie Mellon
  242. Lines: 1010
  243. Approved: news-answers-request@MIT.Edu
  244. Supersedes: <lisp-faq-4.text_721645350@cs.cmu.edu>
  245. Nntp-Posting-Host: a.gp.cs.cmu.edu
  246.  
  247. Archive-name: lisp-faq/part4
  248. Last-Modified: Thu Nov  5 19:30:40 1992 by Mark Kantrowitz
  249. Version: 1.27
  250.  
  251. ;;; ****************************************************************
  252. ;;; Answers to Frequently Asked Questions about Lisp ***************
  253. ;;; ****************************************************************
  254. ;;; Written by Mark Kantrowitz and Barry Margolin
  255. ;;; lisp-faq-4.text -- 55661 bytes
  256.  
  257. This post contains Part 4 of the Lisp FAQ. It is cross-posted to the
  258. newsgroup comp.lang.scheme because it contains material of interest to
  259. Scheme people. The other parts of the Lisp FAQ are posted only to the
  260. newsgroups comp.lang.lisp and news.answers.
  261.  
  262. If you think of questions that are appropriate for this FAQ, or would
  263. like to improve an answer, please send email to us at lisp-faq@think.com.
  264.  
  265. Lisp/Scheme Implementations and Mailing Lists (Part 4):
  266.  
  267.   [4-0]   Free Lisp implementations.
  268.   [4-1]   Commercial Lisp implementations.
  269.   [4-2]   Free Scheme implementations.
  270.   [4-3]   Commercial Scheme implementations.
  271.   [4-4]   Other Commercial Lisp-like Language implementations.
  272.   [4-5]   Where can I get an implementation of Prolog in Lisp?
  273.   [4-6]   What is Dylan?
  274.   [4-7]   What Lisp-related discussion groups and mailing lists exist?
  275.   [4-8]   What are R4RS and IEEE P1178?
  276.   [4-9]   How do I do object-oriented programming in Scheme?
  277.  
  278. Search for [#] to get to question number # quickly.
  279.  
  280. ----------------------------------------------------------------
  281. [4-0]   Free Lisp implementations.
  282.  
  283. Repositories of Lisp source code are described in the answer to
  284. question [6-1].
  285.  
  286. Remember, when ftping compressed or compacted files (.Z, .arc, .fit,
  287. etc.) to use binary mode for retrieving the files.
  288.  
  289.    Kyoto Common Lisp (KCL) is free, but requires a license. Conforms to CLtL1.
  290.    KCL was written by T. Yuasa <yuasa@tutics.tut.ac.jp> and M. Hagiya
  291.    <hagiya@is.s.u-tokyo.ac.jp> at Kyoto University. Austin Kyoto Common Lisp
  292.    (AKCL) is a collection of ports, bug fixes and improvements to KCL
  293.    by Bill Schelter (<wfs@cli.com> or <wfs@rascal.ics.utexas.edu>). {A}KCL
  294.    generates C code which it compiles with the local C compiler. Both are
  295.    available by anonymous ftp from rascal.ics.utexas.edu [128.83.138.20],
  296.    cli.com [192.31.85.1], or [133.11.11.11] (a machine in Japan)
  297.    in the directory /pub. KCL is in the file kcl.tar, and AKCL is in the
  298.    file akcl-xxx.tar.Z (take the highest value of xxx).  To obtain KCL, one
  299.    must first sign and mail a copy of the license agreement to: Special
  300.    Interest Group in LISP, c/o Taiichi Yuasa, Department of Computer Science,
  301.    Toyohashi University of Technology, Toyohashi 441, JAPAN. Runs on Sparc,
  302.    IBM RT, RS/6000, DecStation 3100, hp300, hp800, Macintosh II (under AUX),
  303.    mp386, IBM PS2, Silicon Graphics 4d, Sun3, Sun4, Sequent Symmetry,
  304.    IBM 370, NeXT and Vax. A port to DOS is in beta test as
  305.    math.utexas.edu:pub/beta2.zip. Commercial versions of {A}KCL are available
  306.    from Austin Code Works, 1110 Leafwood Lane, Austin, TX 78750-3409,
  307.    Tel. 512-258-0785, Fax 512-258-1342, including a CLOS for AKCL.
  308.    See also Ibuki, below.
  309.  
  310.    XLISP is free, and runs on the IBM PC (MSDOS), Amiga (AmigaDOS),
  311.    Atari ST (TOS), Apple Macintosh, and Unix. It should run on
  312.    anything with a C compiler.  It was written by David Michael Betz,
  313.    167 Villa Avenue #11, Los Gatos, CA 95032, 408-354-9303 (H),
  314.    408-862-6325 (W), dbetz@apple.com. The reference manual was
  315.    written by Tim Mikkelsen. Version 2.0 is available by anonymous ftp from
  316.            cs.orst.edu:/pub/xlisp/ [128.193.32.1] or
  317.            sumex-aim.stanford.edu:info-mac/lang/
  318.    Version 2.1 is the same as XLISP 2.0, but modified to bring it closer
  319.    to Common Lisp and with several bugs fixed. It can be obtained by
  320.    anonymous ftp from
  321.            glia.biostr.washington.edu:/pub/xlisp      128.95.10.115
  322.            wasp.eng.ufl.edu:/pub                      128.227.116.1
  323.    as the files xlisp21e.zip and xlisp21e.tar.Z. The xlisp21e.zip file comes
  324.    with IBM/PC executables. For obtaining a copy through US mail, send
  325.    email to Tom Almy, toma@sail.labs.tek.com.
  326.  
  327.    CMU Common Lisp is free, and runs on Sparcs (Mach and SunOs),
  328.    DecStation 3100 (Mach), IBM RT (Mach) and requires 16mb RAM, 25mb
  329.    disk. It includes an incremental compiler, Hemlock emacs-style editor,
  330.    source-code level debugger, code profiler and is mostly X3J13
  331.    compatible, including the new loop macro.  It is available by anonymous
  332.    ftp from any CMU CS machine, such as ftp.cs.cmu.edu [128.2.206.173], in the
  333.    directory /afs/cs.cmu.edu/project/clisp/release. Login with username
  334.    "anonymous" and "userid@host" (your email address) as password. Due to
  335.    security restrictions on anonymous ftps (some of the superior
  336.    directories on the path are protected against outside access), it is
  337.    important to "cd" to the source directory with a single command.
  338.    Don't forget to put the ftp into binary mode before using "get" to
  339.    obtain the compressed/tarred files. The binary releases are
  340.    contained in files of the form
  341.                 <version>-<machine>_<os>.tar.Z
  342.    Other files in this directory of possible interest are
  343.    16e-source.tar.Z, which contains all the ".lisp" source files
  344.    used to build version 16e. A listing of the current contents of the
  345.    release area is in the file FILES. You may also use "dir" or "ls" to
  346.    see what is available. Bug reports should be sent to cmucl-bugs@cs.cmu.edu.
  347.  
  348.    PC LISP is a Lisp interpreter for IBM PCs (MSDOS) available from any
  349.    site that archives the group comp.binaries.ibm.pc, such as
  350.    ix1.cc.utexas.edu:/microlib/pc/languages/pc-lisp/ps-lisp.arc
  351.    wuarchive.wustl.edu:/mirrors/msdos/lisp/pclisp30.zip
  352.    ucdavis.ucdavis.edu:/pub/pclisp30.zip
  353.    PC-LISP is a Franz LISP dialect and is by no means Common LISP
  354.    compatible. It is also available directly from the author by sending
  355.    2 blank UNFORMATTED 360K 48TPI IBM PC diskettes, a mailer and
  356.    postage to: Peter Ashwood-Smith, 8 Du Muguet, Hull, Quebec, CANADA,
  357.    J9A-2L8; phone 819-595-9032 (home). Source code is available from the
  358.    author for $15.
  359.  
  360.    WCL is an implementation of Common Lisp for Sparc based workstations.
  361.    It is available free by anonymous ftp from sunrise.stanford.edu in the
  362.    pub/wcl directory. The file wcl-2.14.tar.Z contains the WCL
  363.    distribution, including CLX and PCL; wgdb-4.2.tar.Z contains a version
  364.    of the GDB debugger which has been modified to grok WCL's Lisp; and
  365.    gcc-2.1.tar.Z contains the GNU C compiler (2.2.2 does not work!).  WCL
  366.    provides a large subset of Common Lisp as a Unix shared library that
  367.    can be linked with Lisp and C code to produce efficient and small
  368.    applications.  WCL provides CLX R5 as a shared library, and comes with
  369.    PCL and a few other utilities.  For further information on WCL, see
  370.    the paper published in the proceedings of the 1992 Lisp and Functional
  371.    Programming Conference, a copy of which appears in the wcl directory
  372.    as lfp-paper.ps, or look in the documentation directory of the WCL
  373.    distribution. Written by Wade Hennessey <wade@leland.stanford.edu>.
  374.    Please direct any questions to wcl@sunrise.stanford.edu.
  375.    If you would like to be added to a mailing list for information about
  376.    new releases, send email to wcl-request@sunrise.stanford.edu.
  377.  
  378.    CLISP is a Common Lisp (CLtL1) implementation by Bruno Haible and
  379.    Michael Stoll of Karlsruhe University in Germany. German and English
  380.    versions are available. It runs on Atari-ST, DOS, Linux, and Sun4
  381.    (SunOS 4.1.1), An OS/2 port is in progress. CLISP is for non-profit
  382.    use at universities and at home, not at companies. It includes an
  383.    interpreter and a compiler. It runs in 1.5mb of memory. Some of the
  384.    implementations may be slightly buggy. Some include PCL; others
  385.    include only Closette.  Available by anonymous ftp from
  386.    ma2s2.mathematik.uni-karlsruhe.de [129.13.115.2] in the directory
  387.    /pub/lisp/clisp. For more information, contact
  388.    haible@ma2s2.mathematik.uni-karlsruhe.de.
  389.  
  390. ----------------------------------------------------------------
  391. [4-1]   Commercial Lisp implementations.
  392.  
  393.    Macintosh Common Lisp (MCL 2.0) runs on the Apple Macintosh (Mac+ or
  394.    higher with 4mb RAM and system software 6.0.4 or later or AUX 3.0) and
  395.    is available from APDA for $495. It includes a native CLOS Macintosh
  396.    Toolbox/interface toolkit, ephemeral garbage collection, incremental
  397.    compiler, window-based debugger, source-code stepper, object
  398.    inspector, emacs-style editor, and a foreign function interface.  With
  399.    MCL version 2.0, Apple has started distributing a CD-ROM which
  400.    contains, among other things, a large collection of Lisp code,
  401.    complete MCL manuals in an online-browser format, the CLIM 1.0 manual
  402.    in TeX and postscript, and copies of Gambit 1.8 Scheme, SIOD 2.8
  403.    Scheme, Pixie Scheme, and a demo version of MacScheme. For more
  404.    information, write to: APDA, Apple Computer Inc., 20525 Mariani
  405.    Avenue, MS 33-G, Cupertino, CA 95014-6299 or call toll free
  406.    1-800-282-2732 (US), 1-800-637-0029 (Canada), 1-408-562-3910. Their
  407.    fax number is 1-408-562-3971 and their telex is 171-576. Email may
  408.    also be sent to APDA@applelink.apple.com.  CLIM for MCL is available
  409.    as a separate product from Lucid, Inc., 707 Laurel Street, Menlo Park,
  410.    CA 94025 U.S.A., 415-329-8400, fax: 415-329-8480, <sales@lucid.com>.
  411.  
  412.    Procyon Common Lisp runs on either the Apple Macintosh or IBM PC (386/486
  413.    or OS/2 native mode), costing 450 pounds sterling ($675) educational,
  414.    1500 pounds ($2250) commercial. It requires 2.5mb RAM on the Macintosh
  415.    and 4mb RAM on PCs (4mb and more than 4mb recommended respectively).  It
  416.    is a full graphical environment, and includes a native CLOS with
  417.    meta-object protocol, incremental compilation, foreign function
  418.    interface, object inspector, text and structure editors, and debugger.
  419.    Write to: Scientia Ltd., St. John's Innovation Centre, Cowley Road,
  420.    Cambridge, CB4 4WS, UK, with phone +44-223-421221, fax +44-223-421218,
  421.    and email UK0061@applelink.apple.com. An alternate address for US
  422.    customers is: ExperTelligence, Inc., 5638 Hollister Ave, Suite 302,
  423.    Goleta, CA 93117, or call 1-800-828-0113, (805) 967-1797. Their fax is
  424.    (805) 964-8448 and email is D2042@applelink.apple.com. [The rights to the
  425.    MS Windows version of Procyon were sold to Franz who are marketing and
  426.    developing it as Allegro CL\PC. See Allegro's entry for more
  427.    information.]
  428.  
  429.    Franz Lisp 2.0 runs on the Apple Macintosh, requiring 1mb RAM for the
  430.    interpreter ($99) and 2.5mb RAM for the compiler ($199).  Student prices
  431.    are $60 for the interpreter and $110 for the interpreter and compiler.
  432.    Includes editor and language reference manual. Complete sources are
  433.    available for $649. The ALJABR symbolic mathematics system costs $249.
  434.    Write to:  Fort Pond Research, 15 Fort Pond Road, Acton, MA 01720,
  435.    call 1-508-263-9692, or send mail to order@fpr.com.
  436.  
  437.    Allegro Common Lisp 4.1 runs on a variety of platforms, including
  438.    Sparcs, RS6000, HP700, Silicon Graphics, DecStation (prices start at
  439.    $4,500) and NeXT ($2,000). It requires 12mb RAM for the 680x0 and 16mb
  440.    for RISC. It includes native CLOS, X-windows support, Unix interface,
  441.    incremental compilation, generational garbage collection, and a
  442.    foreign function interface.  Options include Allegro Composer
  443.    (development environment, including debugger, inspector, object
  444.    browser, time/space code profiler, and a graphical user interface),
  445.    Common LISP Interface Manager (CLIM is a Symbolic's Dynamic Windows
  446.    clone) and Allegro CLIP (a parallel version of Lisp for the Sequent).
  447.    Franz has bought the rights to the Windows version of Procyon CL, and
  448.    are now marketing it as Allegro CL\PC for Windows 3.1.  Write to:
  449.    Franz Inc., 1995 University Avenue, Berkeley, CA 94704 or call (510)
  450.    548-3600 (area code was 415), fax (510) 548-8253, telex 340179
  451.    WUPUBTLXSFO. Bug reports can be mailed to bugs@franz.com. Questions
  452.    about Franz Inc. products (e.g., current and special pricing) can be
  453.    sent to info@franz.com.
  454.  
  455.    Ibuki Common Lisp is a commercialized and improved version of Kyoto
  456.    Common Lisp. It runs on over 30 platforms, including Sun3, Sparc, Dec
  457.    (Ultrix), Apollo, HP 9000, IBM RS/6000, Silicon Graphics and IBM PCs.
  458.    It includes an incremental compiler, interpreter, foreign function
  459.    interface. It generates C code from the Lisp and compiles it using the
  460.    local C compiler.  Image size is about 3mb. Cost is $2800 (workstations),
  461.    $3500 (servers), $700 (IBM PCs). Supports CLOS and CLX ($200 extra).
  462.    Source code is available at twice the cost. Ibuki now also has a product
  463.    called CONS which compiles Lisp functions into linkable Unix libraries.
  464.    Write to: Ibuki Inc., PO Box 1627, Los Altos, CA 94022, or call
  465.    415-961-4996, fax 415-961-8016, or send email to Richard Weyhrauch,
  466.    rww@ibuki.com.
  467.  
  468.    Lucid Common Lisp runs on a variety of platforms, including PCs (AIX),
  469.    Apollo, HP, Sun-3, Sparc, IBM RT, IBM RS/6000, Decstation 3100,
  470.    Silicon Graphics, and Vax, and costs $2500 (IBM PCs), $4400 (other
  471.    platforms). Lucid includes native CLOS, a foreign function interface,
  472.    and generational garbage collection.  CLIM is available for Lucid as
  473.    a separate product. Write to Lucid Inc., 707 Laurel Street, Menlo Park,
  474.    CA 94025, call toll free 800-225-1386 (or 800-843-4204), 415-329-8400,
  475.    fax 415-329-8480, or email to sales@lucid.com for information on pricing,
  476.    product availability, etc. Technical questions may be addressed to
  477.    customer-support@lucid.com. See also the comments in question [1-1]
  478.    on the wizards.doc file that comes with the release.
  479.  
  480.    Medley is a Common Lisp development environment that includes a native
  481.    CLOS w/MOP, window toolkit, window-based debugger, incremental
  482.    compiler, structure editor, inspectors, stepper, cross-referencer,
  483.    code analysis tools, and browsers. It is the successor to InterLisp-D.
  484.    It runs on a variety of platforms, including Suns, DecStations,
  485.    386/486s, IBM RS/6000, MIPS, HP, and Xerox 1186. Requires Unix and 8mb
  486.    RAM.  Developer version costs $995 and run-time version $300.
  487.    Instructional costs $250/copy or $1250 site license.  Write to: Venue,
  488.    1549 Industrial Rd, San Carlos, CA 94070, call 1-800-228-5325,
  489.    1-415-508-9672, fax 415-508-9770, or email
  490.    aisupport.mv@envos.xerox.com.
  491.  
  492.    Golden Common Lisp (GCLisp) runs on IBM PCs under DOS and Windows,
  493.    costing $2,000 ($250 extra for Gold Hill Windows), and includes an
  494.    incremental compiler, foreign function interface, interactive
  495.    debugger, and emacs-like editor. It supports DDE and other Windows
  496.    stuff, and is CLtL1 compatible.  Supports PCL. It requires 4mb RAM,
  497.    and 12mb disk. See a review in PC-WEEK 4/1/91 comparing GCLisp with
  498.    an older version of MCL.  Write to: Gold Hill Computers, 26 Landsdowne
  499.    Street, Cambridge, MA 02139, call (617) 621-3300, or fax (617) 621-0656.
  500.  
  501.    Star Sapphire Common LISP provides a subset of Common Lisp and includes
  502.    an emacs-like editor, compiler, debugger, DOS graphics and CLOS. It
  503.    runs on IBM PCs (MSDOS), requires 640k RAM, a hard disk, and costs $100.
  504.    Write to: Sapiens Software Corporation, PO Box 3365,
  505.    Santa Cruz, CA 95063-3365, call (408) 458-1990, or fax (408) 425-0905.
  506.    Sapiens Software also has a Lisp-to-C translator in beta-test.
  507.  
  508.    NanoLISP is a Lisp interpreter for DOS systems that supports a
  509.    large subset of the Common Lisp standard, including lexical and
  510.    dynamic scoping, four lambda-list keywords, closures, local functions,
  511.    macros, output formatting, generic sequence functions, transcendental
  512.    functions, 2-d arrays, bit-arrays, sequences, streams, characters
  513.    double-floats, hash-tables and structures. Runs in DOS 2.1 or higher,
  514.    requiring only 384k of RAM. Cost is $100. Write to: Microcomputer Systems
  515.    Consultants, PO Box 6646, Santa Barbara, CA 93160 or call (805) 967-2270.
  516.  
  517.    Software Engineer is a Lisp for Windows that creates small stand-alone
  518.    executables. It is a subset of Common Lisp, but includes CLOS. It
  519.    requires 2mb RAM, but can use up to 16mb of memory, generating 286
  520.    specific code. It costs $250.  Write to: Raindrop Software, 833
  521.    Arapaho Road, Suite 104, Richardson, TX 75081, call (214) 234-2611, or
  522.    fax (214) 234-2674.
  523.  
  524.    muLISP-90 is a small Lisp which runs on IBM PCs (or the HP 95LX
  525.    palmtop), MS-DOS version 2.1 or later. It isn't Common Lisp, although
  526.    there is a Common Lisp compatibility package which augments muLISP-90
  527.    with over 450 Common Lisp special forms, macros, functions and control
  528.    variables. Includes a screen-oriented editor and debugger, a window
  529.    manager, an interpreter and a compiler. Among the example programs is
  530.    DOCTOR, an Eliza-like program. The runtime system allows one to create
  531.    small EXE or COM executables. Uses a compact internal representation
  532.    of code to minimize space requirements and speed up execution. The
  533.    kernel takes up only 50k of space. Costs $400. Write to Soft
  534.    Warehouse, Inc., 3660 Waialae Avenue, Suite 304, Honolulu, HI
  535.    96816-3236, call 1-808-734-5801, or fax 1-808-735-1105.
  536.  
  537.    CLOE (Common Lisp Operating Environment) is a cross-development
  538.    environment for IBM PCs (MSDOS) and Symbolics Genera. It includes
  539.    CLOS, condition error system, generational garbage collection,
  540.    incremental compilation, code time/space profiling, and a stack-frame
  541.    debugger. It costs from $625 to $4000 and requires 4-8mn RAM and a 386
  542.    processor.  Write to: Symbolics, 6 New England Tech Center,
  543.    521 Virginia Road, Concord, MA 01742, call 1-800-394-5522 or
  544.    508-287-1000 or fax 508-287-1099.
  545.  
  546.    Top Level Common Lisp includes futures, a debugger, tracer, stepper,
  547.    foreign function interface and object inspector.  It runs on Unix
  548.    platforms, requiring 8mb RAM, and costs $687.  Write to: Top Level,
  549.    100 University Drive, Amherst, MA 01002, call (413) 549-4455, or fax
  550.    (413) 549-4910.
  551.